import axios from 'axios'
import router from '@/router/index'
import { ElMessage } from 'element-plus'
import serverLocation from './server-location'

//export表示导出的是function类型的
export default function request(config: any) {

    // 创建axios的实例
    const instance = axios.create({
        baseURL: serverLocation.localhost,
        //5秒超时
        timeout: 5000,
    })

    //配置

    //请求拦截
    instance.interceptors.request.use(config => {
        //这里是请求拦截器，可以做一些请求前的处理
        return config
    }, err => {
        console.log(err)
        //请求错误处理
        ElMessage.error('发出错误的请求！')
    })

    //响应拦截
    instance.interceptors.response.use(res => {
        return res.data
    }, err => {
        console.log(err)
        //根据错误响应类型跳转到错误页面
        if (err.message == 'Network Error') {
            return { flag: false, message: "无法连接到该服务器！" }
        }

        if (err.message === 'timeout of 5000ms exceeded') {
            return { flag: false, message: "服务升级中！" }
        }

        if (err.response.status == '401' && err.response.data.code == '-999') {
            setTimeout(() => {
                router.push('/login')
                return { flag: false, message: "登录已过期，请重新登录！" }
            }, 1000)
        }

        //其他错误
        return err.response.data
    })
    return instance(config)
}